package co.edu.udea.iw.prestamos.modelo.dao;

import java.util.List;

import co.edu.udea.iw.prestamos.modelo.dto.Usuario;
import co.edu.udea.iw.prestamos.util.exception.UserNotFoundException;

/**
 * Interfaz para los DAO de Usuario
 * 
 * @author Dave Rivera <daverivera90@gmail.com>
 * @since 02-07-2014
 * @version 1.0
 */
public interface UsuarioDAO extends CrudDAO<Usuario, String> {
	
	/**
	 * Devuelve la información de un usuario buscándolo por nombre de usuario.
	 * 
	 * @param nombreUsuario Nombre de usuario a buscar.
	 * @return información del usuario buscado.
	 * @throws UserNotFoundException
	 */
	public Usuario obtenerUsuarioPorUsername(String nombreUsuario) throws UserNotFoundException;
	
	/**
	 * Devuelve la información de un usuario buscándolo por email.
	 * 
	 * @param email Email del usuario a buscar.
	 * @return información del usuario buscado.
	 * @throws UserNotFoundException
	 */
	public Usuario obtenerUsuarioPorEmail(String email) throws UserNotFoundException;
	
	/**
	 * Devuelve una lista con todos los usuario que tienen el rol de
	 * investigadores.
	 * 
	 * @return lista de usuarios investigadores.
	 */
	public List<Usuario> obtenerInvestigadores();

}
